This explores potential numeric cutoff of central signs in the diagnosis of central dysfunction. Data obtained from 07182017 Data Request was utilized for this analysis.
| Age_lbl | N | Percent |
|---|---|---|
| 20 to 24 | 13 | 1.68 |
| 25 to 29 | 65 | 8.41 |
| 30 to 34 | 119 | 15.39 |
| 35 to 39 | 197 | 25.49 |
| 40 to 44 | 237 | 30.66 |
| 45 to 49 | 106 | 13.71 |
| 50 to 54 | 30 | 3.88 |
| 55 to 60 | 6 | 0.78 |
| Gender | N | Percent |
|---|---|---|
| M | 761 | 98.45 |
| F | 12 | 1.55 |
| Service | N | Percent |
|---|---|---|
| Navy | 465 | 60.16 |
| Army | 193 | 24.97 |
| Marines | 63 | 8.15 |
| Air Force | 51 | 6.60 |
| Coast Guard | 1 | 0.13 |
The details of complaints are listed below. Total number of patients who exhibited each complaint as well as the percentage of patients with said complaint.
| Symptoms | N | Perc |
|---|---|---|
| Syncope_pre_syncope | 581 | 75.16 |
| Motion_Sensitivity | 551 | 71.28 |
| Vertigo_Spinning | 496 | 64.17 |
| Disequilibrium_imbalance | 316 | 40.88 |
| Dizziness_lightheadedness | 199 | 25.74 |
| Total_C | N | CumN | Perc | CumPerc |
|---|---|---|---|---|
| 13 | 1 | 1 | 0.14 | 0.14 |
| 11 | 1 | 2 | 0.14 | 0.28 |
| 9 | 3 | 5 | 0.41 | 0.69 |
| 8 | 4 | 9 | 0.55 | 1.24 |
| 7 | 14 | 23 | 1.93 | 3.17 |
| 6 | 26 | 49 | 3.58 | 6.75 |
| 5 | 53 | 102 | 7.29 | 14.04 |
| 4 | 67 | 169 | 9.22 | 23.26 |
| 3 | 97 | 266 | 13.34 | 36.60 |
| 2 | 145 | 411 | 19.94 | 56.54 |
| 1 | 150 | 561 | 20.63 | 77.17 |
| 0 | 166 | 727 | 22.83 | 100.00 |
Below outlines the total number of patients with central findings per assessment. The percent is the percentage of patients who exhibited a central sign for that test.
| Test | Sum | Perc |
|---|---|---|
| Oculomotor_Smooth_Pursuit_Vertical | 481 | 62.23 |
| Oculomotor_Smooth_Pursuit_Horizontal | 201 | 26.00 |
| Oculomotor_Saccades_Vertical | 189 | 24.45 |
| VNGTest_DixHallpike_Head_Right | 127 | 16.43 |
| VNGTest_DixHallpike_Head_Left | 121 | 15.65 |
| VNGTest_Roll_Test_Lateral_Left | 119 | 15.39 |
| VNGTest_Roll_Test_Lateral_Right | 106 | 13.71 |
| Oculomotor_Gaze_Right | 79 | 10.22 |
| Oculomotor_Gaze_Left | 79 | 10.22 |
| Oculomotor_Saccades_Horizontal | 75 | 9.70 |
| Oculomotor_Gaze_Up | 44 | 5.69 |
| Oculomotor_Gaze_Center | 31 | 4.01 |
| Oculomotor_Gaze_Down | 29 | 3.75 |
| Oculomotor_Optokinetic | 23 | 2.98 |
| VNGTest_Horizontal_Head_Shake | 20 | 2.59 |
| Oculomotor_Spontaneous_Nystagmus | 18 | 2.33 |
| Positioning_supine_Gaze_up | 7 | 0.91 |
| Positioning_supine_Gaze_Center | 1 | 0.13 |
| VNGTest_Roll_Test_Body_Right | 1 | 0.13 |
Below are scatterplots which compare the various variables of interest. While it is interesting to see correlations among the variables, which is most significant is how these variables respond to the changes in Total_C (Total Central Signs). From here onward, we will try to use extraneous variables to compare variances within the data.
Scatterplot displaying relationships among Injury and other demographics against Total_C.
Below displays the scatterplots of the various surveys against the total number of central signs. Also, should be noted the distribution of the tests within the diagonal.
&nbs; P, Fu, and E come from the DHI subscales - Physical, Funcional, and Emotional.
We will compare the mean differences of surveys among our sample population with various cutoffs for Central Dysfunction. The values calculated below are ‘Normal Patient Means’ - ‘Central Patient Means’. Dependent upon the survey, a (-) mean difference signifies that Central Patients performed worse on that particular survey.
Once we have determined the suggested cutoff for our grouping, we will examine the structure of the variables when comparing these two groups. Variance comparisons has been commented out. We’ll first explore other methods of explaining variance.
Utilizing a regression, we can evaluate which variables contribute most to the variance exhibited within the total number of Central Signs. After scaling the variables, it appears that SOT and NSI explain much of the variance within Total Central signs. Additional exploration will be conducted on these variables, as well as the DHI, ABC and FGA; surveys/questionnaires which hope to provide insight into the varability exhibited in the total number of central signs.
## Stepwise Model Path
## Analysis of Deviance Table
##
## Initial Model:
## Total_C ~ ABC_Tot_Score + NSI_Tot_Score + PCLM_Tot_Score + PHQ9_Tot_Score +
## GAD7_Tot_Score + DHI_Tot_Score + FGA + SOT + LOC + AOC +
## PTA + TimeInService + symp_tot
##
## Final Model:
## Total_C ~ NSI_Tot_Score + SOT + LOC
##
##
## Step Df Deviance Resid. Df Resid. Dev AIC
## 1 388 1566.535 574.7882
## 2 - TimeInService 1 0.005593749 389 1566.541 572.7896
## 3 - symp_tot 1 0.016116442 390 1566.557 570.7937
## 4 - PTA 1 0.016457677 391 1566.573 568.7980
## 5 - GAD7_Tot_Score 1 0.084472498 392 1566.658 566.8196
## 6 - ABC_Tot_Score 1 0.226958741 393 1566.885 564.8779
## 7 - DHI_Tot_Score 1 0.384807372 394 1567.270 562.9766
## 8 - PHQ9_Tot_Score 1 0.421707855 395 1567.691 561.0847
## 9 - FGA 1 1.144260691 396 1568.836 559.3781
## 10 - PCLM_Tot_Score 1 1.792745080 397 1570.628 557.8372
## 11 - AOC 1 3.301717655 398 1573.930 556.6813
## ABC_Tot_Score NSI_Tot_Score PCLM_Tot_Score PHQ9_Tot_Score GAD7_Tot_Score
## 0.024483469 0.168838268 0.037156365 0.033910237 0.036591131
## DHI_Tot_Score FGA SOT LOC AOC
## 0.073580260 0.021804517 0.402576546 0.109360283 0.053152423
## PTA TimeInService symp_tot
## 0.002019941 0.001658376 0.034868185
## Stepwise Model Path
## Analysis of Deviance Table
##
## Initial Model:
## Total_C ~ NSI_Q1 + NSI_Q2 + NSI_Q3 + NSI_Q4 + NSI_Q5 + NSI_Q6 +
## P + Fu + E + ABC_Tot_Score + FGA + SOT + LOC + AOC + PTA +
## TimeInService + symp_tot
##
## Final Model:
## Total_C ~ NSI_Q2 + NSI_Q4 + SOT + LOC
##
##
## Step Df Deviance Resid. Df Resid. Dev AIC
## 1 384 370.5556 3.2576552
## 2 - P 1 0.0005381039 385 370.5561 1.2582389
## 3 - FGA 1 0.0292055594 386 370.5853 -0.7100785
## 4 - PTA 1 0.0603872285 387 370.6457 -2.6445775
## 5 - ABC_Tot_Score 1 0.0647257805 388 370.7104 -4.5743825
## 6 - NSI_Q5 1 0.0771930306 389 370.7876 -6.4906828
## 7 - NSI_Q1 1 0.1037187957 390 370.8914 -8.3782488
## 8 - TimeInService 1 0.1376576045 391 371.0290 -10.2290728
## 9 - E 1 0.1885390153 392 371.2176 -12.0248477
## 10 - symp_tot 1 0.2056724204 393 371.4232 -13.8021820
## 11 - NSI_Q3 1 1.1334664724 394 372.5567 -14.5772729
## 12 - AOC 1 1.1448801418 395 373.7016 -15.3438067
## 13 - NSI_Q6 1 1.5097879933 396 375.2114 -15.7229625
## 14 - Fu 1 1.3377991326 397 376.5492 -16.2921988
## NSI_Q1 NSI_Q2 NSI_Q3 NSI_Q4 NSI_Q5
## 0.023822977 0.088451980 0.030713574 0.203542379 0.027585913
## NSI_Q6 P Fu E ABC_Tot_Score
## 0.040874449 0.022034570 0.053786262 0.028049691 0.021034321
## FGA SOT LOC AOC PTA
## 0.015146876 0.304955479 0.074816519 0.037148007 0.001848635
## TimeInService symp_tot
## 0.002855504 0.023332863
As shown in the previous tab, SOT, LOC, and NSI might explain some of the variance noticed within the Total C variable. We will reverse the analysis and look at the various groupings of Total C and compare their responses to these variables. Suggestive cutoff point would utilize 4 Total Central signs. Given the predictor variables: NSI Total Score (NSI Q2, NSI Q3), LOC, and SOT.
aov_data<-dhi%>%
select('NSI_Q1','NSI_Q2','NSI_Q3','NSI_Q4','NSI_Q5','P','Fu','E','Total_C','NSI_Q6','ABC_Tot_Score','NSI_Tot_Score','PCLM_Tot_Score','PHQ9_Tot_Score','GAD7_Tot_Score','DHI_Tot_Score','FGA','SOT','LOC','AOC','PTA','TimeInService','symp_tot','Total_C','Age','Age_lbl')%>%
filter(complete.cases(.))
auc<-NULL
for (i in 1:9){
Cutoff<-paste0(quo_name(i),"")
aov_data$I<-ifelse(aov_data$Total_C>=i,1,0)
logic_fit<-glm(I~ABC_Tot_Score+NSI_Tot_Score+PCLM_Tot_Score+PHQ9_Tot_Score+GAD7_Tot_Score+DHI_Tot_Score+FGA+SOT+LOC+AOC+PTA+TimeInService+symp_tot,data=aov_data,family="binomial")
prob<-predict(logic_fit,type=c("response"))
aov_data$prob=prob
g<-pROC::roc(I~prob,data=aov_data)
#plot(g)
a<-cbind(Cutoff,round(g$auc,4))
auc<-rbind(auc,a)
}
#Full Model
print(auc)## Cutoff
## [1,] "1" "0.6802"
## [2,] "2" "0.6478"
## [3,] "3" "0.6285"
## [4,] "4" "0.6406"
## [5,] "5" "0.6218"
## [6,] "6" "0.6582"
## [7,] "7" "0.7427"
## [8,] "8" "0.9449"
## [9,] "9" "0.938"
auc<-NULL
for (i in 1:9){
Cutoff<-paste0(quo_name(i),"")
aov_data$I<-ifelse(aov_data$Total_C>=i,1,0)
logic_fit<-glm(I~SOT+NSI_Tot_Score+LOC,data=aov_data,family="binomial")
prob<-predict(logic_fit,type=c("response"))
aov_data$prob=prob
g<-pROC::roc(I~prob,data=aov_data)
#plot(g)
a<-cbind(Cutoff,round(g$auc,4))
auc<-rbind(auc,a)
}
#Model:TOTAL_CENTRAL~SOT+NSI_Tot_Score+LOC
print(auc)## Cutoff
## [1,] "1" "0.6432"
## [2,] "2" "0.6312"
## [3,] "3" "0.5996"
## [4,] "4" "0.6224"
## [5,] "5" "0.6078"
## [6,] "6" "0.6249"
## [7,] "7" "0.6798"
## [8,] "8" "0.7475"
## [9,] "9" "0.7672"
auc<-NULL
for (i in 1:9){
Cutoff<-paste0(quo_name(i),"")
aov_data$I<-ifelse(aov_data$Total_C>=i,1,0)
logic_fit<-glm(I~SOT+NSI_Q2+NSI_Q4+LOC,data=aov_data,family="binomial")
prob<-predict(logic_fit,type=c("response"))
aov_data$prob=prob
g<-pROC::roc(I~prob,data=aov_data)
#plot(g)
a<-cbind(Cutoff,round(g$auc,4))
auc<-rbind(auc,a)
}
#Model:TOTAL_CENTRAL~SOT+NSI_Q2+NSI_Q4+LOC
print(auc)## Cutoff
## [1,] "1" "0.6461"
## [2,] "2" "0.65"
## [3,] "3" "0.6091"
## [4,] "4" "0.6464"
## [5,] "5" "0.6333"
## [6,] "6" "0.6574"
## [7,] "7" "0.7014"
## [8,] "8" "0.7591"
## [9,] "9" "0.7781"
We will now compare variable response between the various cutoffs of Central Dysfunction. P-values are provided which result from the MANOVA testing.
aov_list<-NULL
for (i in 1:9){
aov_data$I<-ifelse(aov_data$Total_C>=i,"1","0")
name<-paste0(quo_name(i),"")
i<-round(summary(manova(cbind(ABC_Tot_Score,NSI_Tot_Score,PCLM_Tot_Score,PHQ9_Tot_Score,GAD7_Tot_Score,DHI_Tot_Score,FGA,SOT,LOC,AOC,PTA,symp_tot)~I,data=aov_data))$stats[11],5)
test<-cbind(name,i)
aov_list<-rbind(aov_list,test)}
#Model: ABC_Tot_Score,NSI_Tot_Score,PCLM_Tot_Score,PHQ9_Tot_Score,GAD7_Tot_Score,DHI_Tot_Score,FGA,SOT,LOC,AOC,PTA,symp_tot~TOTAL_CENTRAL
print(aov_list) ## name i
## [1,] "1" "0.07359"
## [2,] "2" "0.07373"
## [3,] "3" "0.15751"
## [4,] "4" "0.10962"
## [5,] "5" "0.60369"
## [6,] "6" "0.66679"
## [7,] "7" "0.46911"
## [8,] "8" "0.01088"
## [9,] "9" "0.00122"
#
# for (i in 1:9){
# aov_data$I<-ifelse(aov_data$Total_C>=i,"1","0")
# name<-paste0(quo_name(i),"")
# i<-summary(manova(cbind(ABC_Tot_Score,NSI_Tot_Score,PCLM_Tot_Score,PHQ9_Tot_Score,GAD7_Tot_Score,DHI_Tot_Score,FGA,SOT,LOC,AOC,PTA,symp_tot)~I+Age,data=aov_data))
# print(i)
# }
aov_list<-NULL
for (i in 1:9) {
aov_data$I<-ifelse(aov_data$Total_C>=i,"1","0")
name<-paste0(quo_name(i),"")
i<-round(summary(manova(cbind(NSI_Tot_Score,SOT,LOC)~I,data=aov_data))$stats[11],5)
test<-cbind(name,i)
aov_list<-rbind(aov_list,test) }
#Model: NSI_Tot_Score+SOT+LOC~TOTAL_CENTRAL
print(aov_list) ## name i
## [1,] "1" "0.00541"
## [2,] "2" "0.00078"
## [3,] "3" "0.00777"
## [4,] "4" "0.00265"
## [5,] "5" "0.15878"
## [6,] "6" "0.13028"
## [7,] "7" "0.10001"
## [8,] "8" "0.01992"
## [9,] "9" "0.00749"
aov_list<-NULL
for (i in 1:9) {
aov_data$I<-ifelse(aov_data$Total_C>=i,"1","0")
name<-paste0(quo_name(i),"")
i<-round(summary(manova(cbind(NSI_Q2,NSI_Q4,SOT,LOC)~I,data=aov_data))$stats[11],5)
test<-cbind(name,i)
aov_list<-rbind(aov_list,test) }
#Model: NSI_Q2+NSI_Q4+SOT+LOC~TOTAL_CENTRAL
print(aov_list) ## name i
## [1,] "1" "0.00912"
## [2,] "2" "0.00021"
## [3,] "3" "0.00719"
## [4,] "4" "0.00055"
## [5,] "5" "0.01332"
## [6,] "6" "0.03955"
## [7,] "7" "0.14276"
## [8,] "8" "0.01242"
## [9,] "9" "0.00865"
We will explore the population makes up utilizing two cutoff scores, 4 and 5. We will compare their mean responses on our dataset.
dhi$I<-ifelse(dhi$Total_C>=3,"1","0")
vestib<-dhi[,c(2:34,205)]
scores<-dhi[,c(38,40,68,72,83,109,88,89,90,91,92,144,163,202:205)]
dem<-dhi[,c(164:171,41:48,205)]
dm<-dem%>%
filter(!is.na(I))%>%
select(-c(Gender,Service,Special_stat,TypeParticipant,Motion_Sensitivity_Present:Syncope_pre_syncope_Present,Age_lbl))%>%
group_by(I)%>%
summarise_all(means)
kable(dm)| I | Age | TimeInService | symp_tot | LOC | AOC | PTA |
|---|---|---|---|---|---|---|
| 0 | 38.69848 | 17.87603 | 2.880694 | 1.275463 | 2.310905 | 0.3076923 |
| 1 | 38.72932 | 18.13346 | 2.590226 | 1.421875 | 2.346614 | 0.3307087 |
ss<-scores%>%
filter(!is.na(I))%>%
group_by(I)%>%
summarise_all(means)
kable(ss)| I | SOT | FGA | ABC_Tot_Score | DHI_Tot_Score | GAD7_Tot_Score | NSI_Tot_Score | NSI_Q2 | NSI_Q3 | NSI_Q4 | NSI_Q5 | NSI_Q6 | PCLM_Tot_Score | PHQ9_Tot_Score | P | Fu | E |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 83.37602 | 27.95710 | 87.27930 | 15.14094 | 10.33828 | 34.58590 | 0.9139073 | 0.9336283 | 1.863436 | 0.5077263 | 1.245575 | 45.81319 | 10.85126 | 5.463127 | 4.287390 | 4.645161 |
| 1 | 82.08511 | 27.38158 | 85.36648 | 20.98851 | 11.10455 | 39.23485 | 1.0492424 | 1.1787072 | 2.136364 | 0.6488550 | 1.382576 | 47.90152 | 11.89844 | 6.482143 | 5.866071 | 6.160714 |
colnames(vestib)<-sub("Vestibular_Oculomotor_","",colnames(vestib))
colnames(vestib)<-sub("Vestibular_Positioning_","",colnames(vestib))
colnames(vestib)<-sub("_Abnormal","",colnames(vestib))
vt<-vestib%>%
filter(!is.na(I))%>%
group_by(I)%>%
summarise_all(funs(sum(.=="C",na.rm=TRUE)))
vt<-melt(vt)
vt$value<-as.numeric(vt$value)
vt$Mean<-ifelse(vt$I=="1",round(vt$value/168,3),round(vt$value/558,3))
vt<-vt%>%filter(!value==0)%>%arrange(-Mean)
vt<-dcast(vt,variable~I,value.var = "Mean")
kable(vt)| variable | 0 | 1 |
|---|---|---|
| Spontaneous_Nystagmus | NA | 0.077 |
| Smooth_Pursuit_Vertical | 0.405 | 1.381 |
| Smooth_Pursuit_Horizontal | 0.116 | 0.792 |
| Saccades_Vertical | 0.077 | 0.827 |
| Saccades_Horizontal | 0.023 | 0.363 |
| Optokinetic | 0.009 | 0.101 |
| Gaze_Center | 0.002 | 0.161 |
| Gaze_Right | 0.029 | 0.339 |
| Gaze_Left | 0.029 | 0.345 |
| Gaze_Up | 0.005 | 0.220 |
| Gaze_Down | 0.004 | 0.137 |
| supine_Gaze_up | 0.002 | 0.036 |
| supine_Gaze_Center | NA | 0.006 |
| Vestibular_VNGTest_DixHallpike_Head_Right | 0.034 | 0.631 |
| Vestibular_VNGTest_DixHallpike_Head_Left | 0.030 | 0.619 |
| Vestibular_VNGTest_Horizontal_Head_Shake | 0.014 | 0.071 |
| Vestibular_VNGTest_Roll_Test_Lateral_Left | 0.023 | 0.631 |
| Vestibular_VNGTest_Roll_Test_Lateral_Right | 0.014 | 0.571 |
| Spon_Gaze | 0.002 | 0.161 |
| GazeRL | 0.029 | 0.321 |
| GazeR | NA | 0.018 |
| GazeL | NA | 0.024 |
mnv<-manova(cbind(SOT,FGA, ABC_Tot_Score,DHI_Tot_Score,GAD7_Tot_Score, NSI_Tot_Score,NSI_Q2, NSI_Q3, NSI_Q4,NSI_Q5,NSI_Q6, PCLM_Tot_Score, PHQ9_Tot_Score, P, Fu)~I,data=scores)
summary(mnv)## Df Pillai approx F num Df den Df Pr(>F)
## I 1 0.038502 1.0892 15 408 0.3642
## Residuals 422
summary.aov(mnv)## Response SOT :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 50.6 50.609 1.7142 0.1912
## Residuals 422 12458.9 29.523
##
## Response FGA :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 4.52 4.5215 1.1791 0.2782
## Residuals 422 1618.19 3.8346
##
## Response ABC_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 852 851.72 3.3185 0.06921 .
## Residuals 422 108311 256.66
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response DHI_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 940 939.71 2.4892 0.1154
## Residuals 422 159313 377.52
##
## Response GAD7_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 45.3 45.341 1.3356 0.2485
## Residuals 422 14326.0 33.948
##
## Response NSI_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 1939 1938.50 7.6327 0.005983 **
## Residuals 422 107177 253.97
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.679 0.67910 0.9789 0.323
## Residuals 422 292.755 0.69373
##
## Response NSI_Q3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 2.21 2.20758 2.6868 0.1019
## Residuals 422 346.73 0.82164
##
## Response NSI_Q4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 8.47 8.4697 6.991 0.008497 **
## Residuals 422 511.26 1.2115
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q5 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 2.613 2.61251 3.7843 0.0524 .
## Residuals 422 291.329 0.69035
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q6 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 1.74 1.7441 1.6592 0.1984
## Residuals 422 443.60 1.0512
##
## Response PCLM_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 592 591.93 2.1484 0.1435
## Residuals 422 116272 275.53
##
## Response PHQ9_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 35.1 35.084 0.9351 0.3341
## Residuals 422 15833.3 37.520
##
## Response P :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 98.8 98.757 2.8185 0.09393 .
## Residuals 422 14786.6 35.039
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Fu :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 133.3 133.328 2.4747 0.1164
## Residuals 422 22736.2 53.877
##
## 473 observations deleted due to missingness
mnv<-manova(cbind(NSI_Q2,NSI_Q4,SOT,LOC)~I,data=dhi)
summary(mnv)## Df Pillai approx F num Df den Df Pr(>F)
## I 1 0.030292 4.4436 4 569 0.001522 **
## Residuals 572
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary.aov(mnv)## Response NSI_Q2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 2.28 2.28071 2.8721 0.09067 .
## Residuals 572 454.22 0.79408
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 14.11 14.1103 10.951 0.0009942 ***
## Residuals 572 736.99 1.2884
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response SOT :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 251.5 251.522 6.2016 0.01305 *
## Residuals 572 23199.1 40.558
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response LOC :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 4.87 4.8695 2.7731 0.09641 .
## Residuals 572 1004.41 1.7560
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## 323 observations deleted due to missingness
dhi$I<-ifelse(dhi$Total_C>=4,"1","0")
vestib<-dhi[,c(2:34,205)]
scores<-dhi[,c(38,40,68,72,83,109,88,89,90,91,92,144,163,202:205)]
dem<-dhi[,c(164:171,41:48,205)]
dm<-dem%>%
filter(!is.na(I))%>%
select(-c(Gender,Service,Special_stat,TypeParticipant,Motion_Sensitivity_Present:Syncope_pre_syncope_Present,Age_lbl))%>%
group_by(I)%>%
summarise_all(means)
kable(dm)| I | Age | TimeInService | symp_tot | LOC | AOC | PTA |
|---|---|---|---|---|---|---|
| 0 | 38.62545 | 17.87697 | 2.827957 | 1.283270 | 2.317400 | 0.3231358 |
| 1 | 38.98817 | 18.27811 | 2.597633 | 1.481481 | 2.345912 | 0.2937500 |
ss<-scores%>%
filter(!is.na(I))%>%
group_by(I)%>%
summarise_all(means)
kable(ss)| I | SOT | FGA | ABC_Tot_Score | DHI_Tot_Score | GAD7_Tot_Score | NSI_Tot_Score | NSI_Q2 | NSI_Q3 | NSI_Q4 | NSI_Q5 | NSI_Q6 | PCLM_Tot_Score | PHQ9_Tot_Score | P | Fu | E |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 83.23400 | 27.86623 | 87.13705 | 15.87061 | 10.41687 | 35.18693 | 0.9418182 | 0.9799636 | 1.898367 | 0.5400000 | 1.276867 | 45.94203 | 10.92264 | 5.694511 | 4.394299 | 4.741093 |
| 1 | 81.77181 | 27.33793 | 84.73151 | 21.91617 | 11.29577 | 39.95210 | 1.0359281 | 1.1686747 | 2.179641 | 0.6242424 | 1.359281 | 48.68862 | 12.26380 | 6.375000 | 6.430556 | 6.722222 |
colnames(vestib)<-sub("Vestibular_Oculomotor_","",colnames(vestib))
colnames(vestib)<-sub("Vestibular_Positioning_","",colnames(vestib))
colnames(vestib)<-sub("_Abnormal","",colnames(vestib))
vt<-vestib%>%
filter(!is.na(I))%>%
group_by(I)%>%
summarise_all(funs(sum(.=="C",na.rm=TRUE)))
vt<-melt(vt)
vt$value<-as.numeric(vt$value)
vt$Mean<-ifelse(vt$I=="1",round(vt$value/168,3),round(vt$value/558,3))
vt<-vt%>%filter(!value==0)%>%arrange(-Mean)
vt<-dcast(vt,variable~I,value.var = "Mean")
vt$delta<-vt$`0`-vt$`1`
kable(vt)| variable | 0 | 1 | delta |
|---|---|---|---|
| Spontaneous_Nystagmus | 0.002 | 0.071 | -0.069 |
| Smooth_Pursuit_Vertical | 0.554 | 0.887 | -0.333 |
| Smooth_Pursuit_Horizontal | 0.190 | 0.548 | -0.358 |
| Saccades_Vertical | 0.167 | 0.530 | -0.363 |
| Saccades_Horizontal | 0.048 | 0.280 | -0.232 |
| Optokinetic | 0.013 | 0.089 | -0.076 |
| Gaze_Center | 0.004 | 0.155 | -0.151 |
| Gaze_Right | 0.052 | 0.262 | -0.210 |
| Gaze_Left | 0.052 | 0.268 | -0.216 |
| Gaze_Up | 0.011 | 0.202 | -0.191 |
| Gaze_Down | 0.005 | 0.131 | -0.126 |
| supine_Gaze_up | 0.005 | 0.024 | -0.019 |
| supine_Gaze_Center | NA | 0.006 | NA |
| Vestibular_VNGTest_DixHallpike_Head_Right | 0.072 | 0.506 | -0.434 |
| Vestibular_VNGTest_DixHallpike_Head_Left | 0.073 | 0.476 | -0.403 |
| Vestibular_VNGTest_Horizontal_Head_Shake | 0.023 | 0.042 | -0.019 |
| Vestibular_VNGTest_Roll_Test_Lateral_Left | 0.054 | 0.530 | -0.476 |
| Vestibular_VNGTest_Roll_Test_Lateral_Right | 0.039 | 0.488 | -0.449 |
| Spon_Gaze | 0.004 | 0.155 | -0.151 |
| GazeRL | 0.052 | 0.244 | -0.192 |
| GazeR | NA | 0.018 | NA |
| GazeL | NA | 0.024 | NA |
mnv<-manova(cbind(SOT,FGA, ABC_Tot_Score,DHI_Tot_Score,GAD7_Tot_Score,NSI_Q2, NSI_Q3, NSI_Q4,NSI_Q5,NSI_Q6, PCLM_Tot_Score, PHQ9_Tot_Score, P,Fu)~I,data=scores)
summary(mnv)## Df Pillai approx F num Df den Df Pr(>F)
## I 1 0.050865 1.5656 14 409 0.08582 .
## Residuals 422
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary.aov(mnv)## Response SOT :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 104.2 104.159 3.5433 0.06048 .
## Residuals 422 12405.3 29.396
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response FGA :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 5.77 5.7664 1.5049 0.2206
## Residuals 422 1616.95 3.8316
##
## Response ABC_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 1228 1227.57 4.7995 0.02901 *
## Residuals 422 107936 255.77
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response DHI_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 2030 2030.43 5.4154 0.02043 *
## Residuals 422 158222 374.93
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response GAD7_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 78.5 78.527 2.3185 0.1286
## Residuals 422 14292.8 33.869
##
## Response NSI_Q2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.952 0.95235 1.3741 0.2418
## Residuals 422 292.482 0.69308
##
## Response NSI_Q3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 3.19 3.1921 3.896 0.04905 *
## Residuals 422 345.75 0.8193
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 13.71 13.7130 11.436 0.0007874 ***
## Residuals 422 506.01 1.1991
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q5 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 2.061 2.06137 2.9803 0.08501 .
## Residuals 422 291.880 0.69166
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q6 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.31 0.30794 0.292 0.5892
## Residuals 422 445.04 1.05460
##
## Response PCLM_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 580 579.61 2.1034 0.1477
## Residuals 422 116284 275.55
##
## Response PHQ9_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 96.5 96.537 2.583 0.1088
## Residuals 422 15771.9 37.374
##
## Response P :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 70 69.975 1.9932 0.1587
## Residuals 422 14815 35.108
##
## Response Fu :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 394.1 394.15 7.4006 0.00679 **
## Residuals 422 22475.4 53.26
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## 473 observations deleted due to missingness
mnv<-manova(cbind(SOT,FGA,ABC_Tot_Score,DHI_Tot_Score,GAD7_Tot_Score,NSI_Tot_Score,PCLM_Tot_Score,PHQ9_Tot_Score,P,Fu)~I,data=scores)
#summary(mnv)
#summary.aov(mnv)
mnv<-manova(cbind(NSI_Q2,NSI_Q4,SOT,LOC)~I,data=dhi)
summary(mnv)## Df Pillai approx F num Df den Df Pr(>F)
## I 1 0.030837 4.5262 4 569 0.001318 **
## Residuals 572
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary.aov(mnv)## Response NSI_Q2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 1.63 1.63218 2.0525 0.1525
## Residuals 572 454.86 0.79522
##
## Response NSI_Q4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 13.65 13.6520 10.589 0.001205 **
## Residuals 572 737.45 1.2892
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response SOT :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 265.1 265.072 6.5395 0.01081 *
## Residuals 572 23185.5 40.534
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response LOC :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 4.93 4.9336 2.8098 0.09423 .
## Residuals 572 1004.34 1.7558
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## 323 observations deleted due to missingness
dhi$I<-ifelse(dhi$Total_C>=5,"1","0")
vestib<-dhi[,c(2:34,205)]
scores<-dhi[,c(38,40,68,72,83,109,88,89,90,91,92,144,163,202:205)]
dem<-dhi[,c(164:171,41:48,205)]
dm<-dem%>%
filter(!is.na(I))%>%
select(-c(Gender,Service,Special_stat,TypeParticipant,Motion_Sensitivity_Present:Syncope_pre_syncope_Present,Age_lbl))%>%
group_by(I)%>%
summarise_all(means)
kable(dm)| I | Age | TimeInService | symp_tot | LOC | AOC | PTA |
|---|---|---|---|---|---|---|
| 0 | 38.83040 | 18.08696 | 2.793600 | 1.313559 | 2.281570 | 0.3191126 |
| 1 | 37.97059 | 17.25490 | 2.656863 | 1.428571 | 2.583333 | 0.2989691 |
ss<-scores%>%
filter(!is.na(I))%>%
group_by(I)%>%
summarise_all(means)
kable(ss)| I | SOT | FGA | ABC_Tot_Score | DHI_Tot_Score | GAD7_Tot_Score | NSI_Tot_Score | NSI_Q2 | NSI_Q3 | NSI_Q4 | NSI_Q5 | NSI_Q6 | PCLM_Tot_Score | PHQ9_Tot_Score | P | Fu | E |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 82.99031 | 27.74612 | 86.84963 | 16.82372 | 10.45513 | 35.87034 | 0.9642857 | 1.011382 | 1.935170 | 0.5593496 | 1.279675 | 46.30097 | 11.07576 | 5.771670 | 4.682105 | 5.002105 |
| 1 | 82.16279 | 27.69412 | 84.81039 | 20.13861 | 11.61798 | 38.89109 | 0.9603960 | 1.100000 | 2.138614 | 0.5600000 | 1.396040 | 48.28713 | 12.21212 | 6.377778 | 6.133333 | 6.533333 |
colnames(vestib)<-sub("Vestibular_Oculomotor_","",colnames(vestib))
colnames(vestib)<-sub("Vestibular_Positioning_","",colnames(vestib))
colnames(vestib)<-sub("_Abnormal","",colnames(vestib))
vt<-vestib%>%
filter(!is.na(I))%>%
group_by(I)%>%
summarise_all(funs(sum(.=="C",na.rm=TRUE)))
vt<-melt(vt)
vt$value<-as.numeric(vt$value)
vt$Mean<-ifelse(vt$I=="1",round(vt$value/168,3),round(vt$value/558,3))
vt<-vt%>%filter(!value==0)%>%arrange(-Mean)
vt<-dcast(vt,variable~I,value.var = "Mean")
kable(vt)| variable | 0 | 1 |
|---|---|---|
| Spontaneous_Nystagmus | 0.004 | 0.065 |
| Smooth_Pursuit_Vertical | 0.654 | 0.554 |
| Smooth_Pursuit_Horizontal | 0.254 | 0.333 |
| Saccades_Vertical | 0.222 | 0.345 |
| Saccades_Horizontal | 0.081 | 0.173 |
| Optokinetic | 0.022 | 0.060 |
| Gaze_Center | 0.011 | 0.131 |
| Gaze_Right | 0.070 | 0.202 |
| Gaze_Left | 0.072 | 0.202 |
| Gaze_Up | 0.022 | 0.167 |
| Gaze_Down | 0.011 | 0.113 |
| supine_Gaze_up | 0.005 | 0.024 |
| supine_Gaze_Center | NA | 0.006 |
| Vestibular_VNGTest_DixHallpike_Head_Right | 0.120 | 0.345 |
| Vestibular_VNGTest_DixHallpike_Head_Left | 0.116 | 0.333 |
| Vestibular_VNGTest_Horizontal_Head_Shake | 0.025 | 0.036 |
| Vestibular_VNGTest_Roll_Test_Lateral_Left | 0.099 | 0.381 |
| Vestibular_VNGTest_Roll_Test_Lateral_Right | 0.077 | 0.363 |
| Spon_Gaze | 0.011 | 0.131 |
| GazeRL | 0.070 | 0.185 |
| GazeR | NA | 0.018 |
| GazeL | 0.002 | 0.018 |
mnv<-manova(cbind(SOT,FGA, ABC_Tot_Score,DHI_Tot_Score,GAD7_Tot_Score, NSI_Tot_Score,NSI_Q2, NSI_Q3, NSI_Q4,NSI_Q5,NSI_Q6, PCLM_Tot_Score, PHQ9_Tot_Score, P, Fu)~I,data=scores)
summary(mnv)## Df Pillai approx F num Df den Df Pr(>F)
## I 1 0.042957 1.2209 15 408 0.2524
## Residuals 422
summary.aov(mnv)## Response SOT :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 66.9 66.889 2.2686 0.1328
## Residuals 422 12442.6 29.485
##
## Response FGA :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.14 0.1357 0.0353 0.8511
## Residuals 422 1622.58 3.8450
##
## Response ABC_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 1122 1121.84 4.3818 0.03692 *
## Residuals 422 108041 256.02
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response DHI_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 765 764.98 2.0241 0.1556
## Residuals 422 159487 377.93
##
## Response GAD7_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 96.9 96.890 2.8644 0.0913 .
## Residuals 422 14274.5 33.826
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 725 724.97 2.8226 0.09369 .
## Residuals 422 108390 256.85
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.001 0.00119 0.0017 0.967
## Residuals 422 293.433 0.69534
##
## Response NSI_Q3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 1.05 1.04782 1.271 0.2602
## Residuals 422 347.89 0.82439
##
## Response NSI_Q4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 8.97 8.9700 7.4112 0.00675 **
## Residuals 422 510.76 1.2103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response NSI_Q5 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.881 0.88075 1.2683 0.2607
## Residuals 422 293.060 0.69446
##
## Response NSI_Q6 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.01 0.01153 0.0109 0.9168
## Residuals 422 445.34 1.05530
##
## Response PCLM_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 477 476.6 1.7281 0.1894
## Residuals 422 116387 275.8
##
## Response PHQ9_Tot_Score :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 78.4 78.440 2.0964 0.1484
## Residuals 422 15790.0 37.417
##
## Response P :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 33.4 33.397 0.9489 0.3306
## Residuals 422 14852.0 35.194
##
## Response Fu :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 119.3 119.30 2.2129 0.1376
## Residuals 422 22750.2 53.91
##
## 473 observations deleted due to missingness
mnv<-manova(cbind(NSI_Q2,NSI_Q4,SOT,LOC)~I,data=dhi)
summary(mnv)## Df Pillai approx F num Df den Df Pr(>F)
## I 1 0.012669 1.8253 4 569 0.1224
## Residuals 572
summary.aov(mnv)## Response NSI_Q2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.04 0.03513 0.044 0.8339
## Residuals 572 456.46 0.79801
##
## Response NSI_Q4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 4.98 4.9829 3.82 0.05113 .
## Residuals 572 746.12 1.3044
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response SOT :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 65.2 65.237 1.5957 0.207
## Residuals 572 23385.4 40.884
##
## Response LOC :
## Df Sum Sq Mean Sq F value Pr(>F)
## I 1 0.42 0.41928 0.2377 0.626
## Residuals 572 1008.86 1.76374
##
## 323 observations deleted due to missingness
## [1] 177
## [1] 179
## [1] 280
##
## 0 1 2 3 4 5 6 7 8 9 11 13
## 138 113 105 71 51 39 20 11 4 2 1 0
## am 28 37 40 26 16 14 6 3 0 1 0 1
##
## 0 1 2 3 4 5 6 7 8 9 11 13
## 140 115 107 72 46 36 20 9 3 2 1 0
## pm 26 35 38 25 21 17 6 5 1 1 0 1
##
## 0 1 2 3 4 5 6 7 8 9 11 13
## 120 92 83 56 41 28 18 9 3 2 1 0
## pam 46 58 62 41 26 25 8 5 1 1 0 1
Comments/Questions:
Prior Percentage of patients with central dysfunction Particular test thats significant of central signs <Explore individuals signs - those with our cutoff score Control for Medications - subset data with AM/PM <Significance of either